a:8:{s:4:"name";s:15:"ajw_comment_alt";s:6:"author";s:11:"Andrew Waer";s:10:"author_uri";s:20:"http://compooter.org";s:7:"version";s:3:"0.2";s:11:"description";s:57:"Alternates output based on even- or odd-numbered comments";s:4:"help";s:2477:"

	<h1>Summary</h1>

	<p>Alternates output based on even- or odd-numbered comments.   Intended usage is from within default comment form.</p>

	<h2>Requires:</h2>
	<ul>
		<li>1.0RC3 (rev 180 or greater)</li>
		<li><strong>If you are using Textpattern 1.0RC3 rev142 thru rev179</strong>, you will need to perform a one-line edit of <code>/textpattern/publish/comment.php</code>, as outlined in <a href="http://forum.textpattern.com/viewtopic.php?id=6893#44347">this Textpattern Forum thread</a> (<em>allows for plugin parsing in comments</em>)</li>
	</ul>

	<h2>Attributes</h2>

	<h3>even  (<em>optional</em>)</h3>

	<p>You may optionally use some other text to be output in the case of even.</p>

	<h3>odd (<em>optional</em>)</h3>

	<p>You may optionally use some other text to be output in the case of odd.</p>

	<h2>Examples</h2>

	<p>Ideally, this is meant to be used in your default comment form.  While it is possible to use this plugin with the default &lt;ol&gt; formatting of comments, you'll be able to do much more fun things if you switch off numbered list formatting in <em>admin-&gt;preferences</em>.</p>

	<h3>Ex. 1</h3>

	<p><span style="padding: 10px; border: 1px solid #999; background: #eee; display: block; margin: 10px 0 0 0; text-indent: 0; text-align: left; color: #600;width:600px;"><code>&lt;div class="&lt;txp:ajw_comment_alt /&gt;"&gt;<br /> &nbsp;&nbsp;...other comment form stuff...<br />&lt;/div&gt;</code></span></p>

	<p><span style="padding: 10px; border: 1px solid #999; background: #eee; display: block; margin: 10px 0 0 0; text-indent: 0; text-align: left; color: #600;width:600px;"><code>&lt;div class="odd"&gt;<br /> &nbsp;&nbsp;...other comment form stuff...<br />&lt;/div&gt;</code></span></p>

	<h3>Ex. 2</h3>

	<p><span style="padding: 10px; border: 1px solid #999; background: #eee; display: block; margin: 10px 0 0 0; text-indent: 0; text-align: left; color: #600;width:600px;"><code>&lt;div class="&lt;txp:ajw_comment_alt even="foo" odd="bar" /&gt;"&gt;<br /> &nbsp;&nbsp;...other comment form stuff...<br />&lt;/div&gt;</code></span></p>

	<p><span style="padding: 10px; border: 1px solid #999; background: #eee; display: block; margin: 10px 0 0 0; text-indent: 0; text-align: left; color: #600;width:600px;"><code>&lt;div class="foo"&gt;<br /> &nbsp;&nbsp;...other comment form stuff...<br />&lt;/div&gt;<br />&lt;div class="bar"&gt;<br /> &nbsp;&nbsp;...your txp comment tags would go here...<br />&lt;/div&gt;</code></span></p>

";s:4:"code";s:335:"
	function ajw_comment_alt($atts) 
	{
		global $ajw_commentalt;
		if (is_array($atts)) extract($atts);

		$even = (empty($even)) ? 'even' : $even;
		$odd  = (empty($odd))  ? 'odd'  : $odd;

		$ajw_commentalt = (empty($ajw_commentalt)) ? 0 : $ajw_commentalt;
		$ajw_commentalt++;

		return ($ajw_commentalt % 2 == 0) ? $even : $odd;
	}
";s:3:"md5";s:32:"66ddcbcc2f025e7b590bf16f4ce880a6";}